unit MemoXControl1_TLB;

// ************************************************************************ //
// WARNING                                                                    
// -------                                                                    
// The types declared in this file were generated from data read from a       
// Type Library. If this type library is explicitly or indirectly (via        
// another type library referring to this type library) re-imported, or the   
// 'Refresh' command of the Type Library Editor activated while editing the   
// Type Library, the contents of this file will be regenerated and all        
// manual modifications will be lost.                                         
// ************************************************************************ //

// PASTLWTR : $Revision:   1.88  $
// File generated on 2/1/96 8:34:32 AM from Type Library described below.

//**********************************************************************//
// NOTE:                                                                      
// Items guarded by $IFDEF_LIVE_SERVER_AT_DESIGN_TIME are used 
//by properties  
// which return objects that may need to be explicitly created via a function 
// call prior to any access via the property. These items have been disabled  
// in order to prevent accidental use from within the object inspector. You   
// may enable them by defining LIVE_SERVER_AT_DESIGN_TIME or by selectively   
// removing them from the $IFDEF blocks. However, such items must still be    
// programmatically created via a method of the appropriate CoClass before    
// they can be used.                                                          
// ************************************************************************ //
// Type  C:\Program Files\Borland\Delphi5\Projects\MemoXControl1.tlb (1)
// IID\LCID: {6F6438E0-5C72-11CF-9D30-FA55F781D805}\0
// Helpfile: 
// DepndLst: 
//   (1) v2.0 stdole, (C:\WINDOWS\SYSTEM\STDOLE2.TLB)
//   (2) v4.0 StdVCL, (C:\WINDOWS\SYSTEM\STDVCL40.DLL)
// ************************************************************************ //
// Unit must be compiled without type-checked pointers. 

{$TYPEDADDRESS OFF} 

interface

uses Windows, ActiveX, Classes, Graphics, OleServer, OleCtrls, StdVCL;

// *********************************************************************//
// GUIDS declared in the TypeLibrary. Following prefixes are used:        
//   Type Libraries     : LIBID_xxxx                                      
//   CoClasses          : CLASS_xxxx                                      
//   DISPInterfaces     : DIID_xxxx                                       
//   Non-DISP interfaces: IID_xxxx                                        
// *********************************************************************//
const
  // TypeLibrary Major and minor versions
  MemoXControl1MajorVersion = 1;
  MemoXControl1MinorVersion = 0;

  LIBID_MemoXControl1: TGUID =
         '{6F6438E0-5C72-11CF-9D30-FA55F781D805}';

  IID_IMemoX: TGUID = 
        '{6F6438E1-5C72-11CF-9D30-FA55F781D805}';
  DIID_IMemoXEvents: TGUID = 
      '{6F6438E3-5C72-11CF-9D30-FA55F781D805}';
  CLASS_MemoX: TGUID = 
      '{6F6438E5-5C72-11CF-9D30-FA55F781D805}';

// *********************************************************************//
// Declaration of Enumerations defined in Type Library                    
// *********************************************************************//
// Constants for enum TxAlignment

type
  TxAlignment = TOleEnum;
const
  taLeftJustify = $00000000;
  taRightJustify = $00000001;
  taCenter = $00000002;

// Constants for enum TxBorderStyle
type
  TxBorderStyle = TOleEnum;
const
  bsNone = $00000000;
  bsSingle = $00000001;

// Constants for enum TxDragMode
type
  TxDragMode = TOleEnum;
const
  dmManual = $00000000;
  dmAutomatic = $00000001;

// Constants for enum TxImeMode
type
  TxImeMode = TOleEnum;
const
  imDisable = $00000000;
  imClose = $00000001;
  imOpen = $00000002;
  imDontCare = $00000003;
  imSAlpha = $00000004;
  imAlpha = $00000005;
  imHira = $00000006;
  imSKata = $00000007;
  imKata = $00000008;
  imChinese = $00000009;
  imSHanguel = $0000000A;
  imHanguel = $0000000B;

// Constants for enum TxScrollStyle
type
  TxScrollStyle = TOleEnum;
const
  ssNone = $00000000;
  ssHorizontal = $00000001;
  ssVertical = $00000002;
  ssBoth = $00000003;

// Constants for enum TxMouseButton
type
  TxMouseButton = TOleEnum;
const
  mbLeft = $00000000;
  mbRight = $00000001;
  mbMiddle = $00000002;

type

// *********************************************************************//
// Forward declaration of types defined in TypeLibrary                    
// *********************************************************************//
  IMemoX = interface;
  IMemoXDisp = dispinterface;
  IMemoXEvents = dispinterface;

// *********************************************************************//
// Declaration of CoClasses defined in Type Library                       
// (NOTE: Here we map each CoClass to its Default Interface)              
// *********************************************************************//
  MemoX = IMemoX;


// *********************************************************************//
// Declaration of structures, unions and aliases.                         
// *********************************************************************//
  PPUserType1 = ^IFontDisp; {*}


// *********************************************************************//
// Interface: IMemoX
// Flags:     (4416) Dual OleAutomation Dispatchable
// GUID:      {6F6438E1-5C72-11CF-9D30-FA55F781D805}
// *********************************************************************//
  IMemoX = interface(IDispatch)
    ['{6F6438E1-5C72-11CF-9D30-FA55F781D805}']
    function  Get_Alignment: TxAlignment; safecall;
    procedure Set_Alignment(Value: TxAlignment); safecall;
    function  Get_BorderStyle: TxBorderStyle; safecall;
    procedure Set_BorderStyle(Value: TxBorderStyle); safecall;
    function  Get_Color: OLE_COLOR; safecall;
    procedure Set_Color(Value: OLE_COLOR); safecall;
    function  Get_Ctl3D: WordBool; safecall;
    procedure Set_Ctl3D(Value: WordBool); safecall;
    function  Get_DragCursor: Smallint; safecall;
    procedure Set_DragCursor(Value: Smallint); safecall;
    function  Get_DragMode: TxDragMode; safecall;
    procedure Set_DragMode(Value: TxDragMode); safecall;
    function  Get_Enabled: WordBool; safecall;
    procedure Set_Enabled(Value: WordBool); safecall;
    function  Get_Font: IFontDisp; safecall;
    procedure _Set_Font(const Value: IFontDisp); safecall;
    procedure Set_Font(var Value: IFontDisp); safecall;
    function  Get_HideSelection: WordBool; safecall;
    procedure Set_HideSelection(Value: WordBool); safecall;
    function  Get_ImeMode: TxImeMode; safecall;
    procedure Set_ImeMode(Value: TxImeMode); safecall;
    function  Get_ImeName: WideString; safecall;
    procedure Set_ImeName(const Value: WideString); safecall;
    function  Get_Lines: IStrings; safecall;
    procedure Set_Lines(const Value: IStrings); safecall;
    function  Get_MaxLength: Integer; safecall;
    procedure Set_MaxLength(Value: Integer); safecall;
    function  Get_OEMConvert: WordBool; safecall;
    procedure Set_OEMConvert(Value: WordBool); safecall;
    function  Get_ParentColor: WordBool; safecall;
    procedure Set_ParentColor(Value: WordBool); safecall;
    function  Get_ParentCtl3D: WordBool; safecall;
    procedure Set_ParentCtl3D(Value: WordBool); safecall;
    function  Get_ReadOnly: WordBool; safecall;
    procedure Set_ReadOnly(Value: WordBool); safecall;
    function  Get_ScrollBars: TxScrollStyle; safecall;
    procedure Set_ScrollBars(Value: TxScrollStyle); safecall;
    function  Get_Visible: WordBool; safecall;
    procedure Set_Visible(Value: WordBool); safecall;
    function  Get_WantReturns: WordBool; safecall;
    procedure Set_WantReturns(Value: WordBool); safecall;
    function  Get_WantTabs: WordBool; safecall;
    procedure Set_WantTabs(Value: WordBool); safecall;
    function  Get_WordWrap: WordBool; safecall;
    procedure Set_WordWrap(Value: WordBool); safecall;
    function  Get_CanUndo: WordBool; safecall;
    function  Get_Modified: WordBool; safecall;
    procedure Set_Modified(Value: WordBool); safecall;
    function  Get_SelLength: Integer; safecall;
    procedure Set_SelLength(Value: Integer); safecall;
    function  Get_SelStart: Integer; safecall;
    procedure Set_SelStart(Value: Integer); safecall;
    function  Get_SelText: WideString; safecall;
    procedure Set_SelText(const Value: WideString); safecall;
    function  Get_Text: WideString; safecall;
    procedure Set_Text(const Value: WideString); safecall;
    function  Get_DoubleBuffered: WordBool; safecall;
    procedure Set_DoubleBuffered(Value: WordBool); safecall;
    function  Get_VisibleDockClientCount: Integer; safecall;
    function  Get_Cursor: Smallint; safecall;
    procedure Set_Cursor(Value: Smallint); safecall;
    property Alignment: TxAlignment read Get_Alignment write Set_Alignment;
    property BorderStyle: TxBorderStyle read Get_BorderStyle write Set_BorderStyle;
    property Color: OLE_COLOR read Get_Color write Set_Color;
    property Ctl3D: WordBool read Get_Ctl3D write Set_Ctl3D;
    property DragCursor: Smallint read Get_DragCursor write Set_DragCursor;
    property DragMode: TxDragMode read Get_DragMode write Set_DragMode;
    property Enabled: WordBool read Get_Enabled write Set_Enabled;
    property Font: IFontDisp read Get_Font write _Set_Font;
    property HideSelection: WordBool read Get_HideSelection write Set_HideSelection;
    property ImeMode: TxImeMode read Get_ImeMode write Set_ImeMode;
    property ImeName: WideString read Get_ImeName write Set_ImeName;
    property Lines: IStrings read Get_Lines write Set_Lines;
    property MaxLength: Integer read Get_MaxLength write Set_MaxLength;
    property OEMConvert: WordBool read Get_OEMConvert write Set_OEMConvert;
    property ParentColor: WordBool read Get_ParentColor write Set_ParentColor;
    property ParentCtl3D: WordBool read Get_ParentCtl3D write Set_ParentCtl3D;
    property ReadOnly: WordBool read Get_ReadOnly write Set_ReadOnly;
    property ScrollBars: TxScrollStyle read Get_ScrollBars write Set_ScrollBars;
    property Visible: WordBool read Get_Visible write Set_Visible;
    property WantReturns: WordBool read Get_WantReturns write Set_WantReturns;
    property WantTabs: WordBool read Get_WantTabs write Set_WantTabs;
    property WordWrap: WordBool read Get_WordWrap write Set_WordWrap;
    property CanUndo: WordBool read Get_CanUndo;
    property Modified: WordBool read Get_Modified write Set_Modified;
    property SelLength: Integer read Get_SelLength write Set_SelLength;
    property SelStart: Integer read Get_SelStart write Set_SelStart;
    property SelText: WideString read Get_SelText write Set_SelText;
    property Text: WideString read Get_Text write Set_Text;
    property DoubleBuffered: WordBool read Get_DoubleBuffered write Set_DoubleBuffered;
    property VisibleDockClientCount: Integer read Get_VisibleDockClientCount;
    property Cursor: Smallint read Get_Cursor write Set_Cursor;
  end;

// *********************************************************************//
// DispIntf:  IMemoXDisp
// Flags:     (4416) Dual OleAutomation Dispatchable
// GUID:      {6F6438E1-5C72-11CF-9D30-FA55F781D805}
// *********************************************************************//

  IMemoXDisp = dispinterface
    ['{6F6438E1-5C72-11CF-9D30-FA55F781D805}']
    property Alignment: TxAlignment dispid 1;
    property BorderStyle: TxBorderStyle dispid 2;
    property Color: OLE_COLOR dispid -501;
    property Ctl3D: WordBool dispid 3;
    property DragCursor: Smallint dispid 4;
    property DragMode: TxDragMode dispid 5;
    property Enabled: WordBool dispid -514;
    property Font: IFontDisp dispid -512;
    property HideSelection: WordBool dispid 6;
    property ImeMode: TxImeMode dispid 7;
    property ImeName: WideString dispid 8;
    property Lines: IStrings dispid 9;
    property MaxLength: Integer dispid 10;
    property OEMConvert: WordBool dispid 11;
    property ParentColor: WordBool dispid 12;
    property ParentCtl3D: WordBool dispid 13;
    property ReadOnly: WordBool dispid 14;
    property ScrollBars: TxScrollStyle dispid 15;
    property Visible: WordBool dispid 16;
    property WantReturns: WordBool dispid 17;
    property WantTabs: WordBool dispid 18;
    property WordWrap: WordBool dispid 19;
    property CanUndo: WordBool readonly dispid 30;
    property Modified: WordBool dispid 31;
    property SelLength: Integer dispid 32;
    property SelStart: Integer dispid 33;
    property SelText: WideString dispid 34;
    property Text: WideString dispid -517;
    property DoubleBuffered: WordBool dispid 35;
    property VisibleDockClientCount: Integer readonly dispid 36;
    property Cursor: Smallint dispid 45;
  end;

// *********************************************************************//
// DispIntf:  IMemoXEvents
// Flags:     (0)
// GUID:      {6F6438E3-5C72-11CF-9D30-FA55F781D805}
// *********************************************************************//
  IMemoXEvents = dispinterface
    ['{6F6438E3-5C72-11CF-9D30-FA55F781D805}']
    procedure OnChange; dispid 1;
    procedure OnClick; dispid 2;
    procedure OnDblClick; dispid 4;
    procedure OnKeyPress(var Key: Smallint); dispid 10;
  end;


// *********************************************************************//
// OLE Control Proxy class declaration
// Control Name     : TMemoX
// Help String      : MemoX Control
// Default Interface: IMemoX
// Def. Intf. DISP? : No
// Event   Interface: IMemoXEvents
// TypeFlags        : (34) CanCreate Control
// *********************************************************************//
  TMemoXOnKeyPress = procedure(Sender: TObject; 
                                           var Key: Smallint) of object;

  TMemoX = class(TOleControl)
  private
    FOnChange: TNotifyEvent;
    FOnClick: TNotifyEvent;
    FOnDblClick: TNotifyEvent;
    FOnKeyPress: TMemoXOnKeyPress;
    FIntf: IMemoX;
    function  GetControlInterface: IMemoX;
  protected
    procedure CreateControl;
    procedure InitControlData; override;
    function  Get_Lines: IStrings;
    procedure Set_Lines(const Value: IStrings);
  public
    property  ControlInterface: IMemoX read GetControlInterface;
    property  DefaultInterface: IMemoX read GetControlInterface;
    property CanUndo: WordBool index 30 read GetWordBoolProp;
    property Modified: WordBool index 31 read GetWordBoolProp write SetWordBoolProp;
    property SelLength: Integer index 32 read GetIntegerProp write SetIntegerProp;
    property SelStart: Integer index 33 read GetIntegerProp write SetIntegerProp;
    property SelText: WideString index 34 read GetWideStringProp write SetWideStringProp;
    property Text: WideString index -517 read GetWideStringProp write SetWideStringProp;
    property DoubleBuffered: WordBool index 35 read GetWordBoolProp write SetWordBoolProp;
    property VisibleDockClientCount: Integer index 36 read GetIntegerProp;
  published
    property Alignment: TOleEnum index 1 read GetTOleEnumProp write SetTOleEnumProp stored False;
    property BorderStyle: TOleEnum index 2 read GetTOleEnumProp write SetTOleEnumProp stored False;
    property Color: TColor index -501 read GetTColorProp write SetTColorProp stored False;
    property Ctl3D: WordBool index 3 read GetWordBoolProp write SetWordBoolProp stored False;
    property DragCursor: Smallint index 4 read GetSmallintProp write SetSmallintProp stored False;
    property DragMode: TOleEnum index 5 read GetTOleEnumProp write SetTOleEnumProp stored False;
    property Enabled: WordBool index -514 read GetWordBoolProp write SetWordBoolProp stored False;
    property Font: TFont index -512 read GetTFontProp write SetTFontProp stored False;
    property HideSelection: WordBool index 6 read GetWordBoolProp write SetWordBoolProp stored False;
    property ImeMode: TOleEnum index 7 read GetTOleEnumProp write SetTOleEnumProp stored False;
    property ImeName: WideString index 8 read GetWideStringProp write SetWideStringProp stored False;
    property Lines: IStrings read Get_Lines write Set_Lines stored False;
    property MaxLength: Integer index 10 read GetIntegerProp write SetIntegerProp stored False;
    property OEMConvert: WordBool index 11 read GetWordBoolProp write SetWordBoolProp stored False;
    property ParentColor: WordBool index 12 read GetWordBoolProp write SetWordBoolProp stored False;
    property ParentCtl3D: WordBool index 13 read GetWordBoolProp write SetWordBoolProp stored False;
    property ReadOnly: WordBool index 14 read GetWordBoolProp write SetWordBoolProp stored False;
    property ScrollBars: TOleEnum index 15 read GetTOleEnumProp write SetTOleEnumProp stored False;
    property Visible: WordBool index 16 read GetWordBoolProp write SetWordBoolProp stored False;
    property WantReturns: WordBool index 17 read GetWordBoolProp write SetWordBoolProp stored False;
    property WantTabs: WordBool index 18 read GetWordBoolProp write SetWordBoolProp stored False;
    property WordWrap: WordBool index 19 read GetWordBoolProp write SetWordBoolProp stored False;
    property Cursor: Smallint index 45 read GetSmallintProp write SetSmallintProp stored False;
    property OnChange: TNotifyEvent read FOnChange write FOnChange;
    property OnClick: TNotifyEvent read FOnClick write FOnClick;
    property OnDblClick: TNotifyEvent read FOnDblClick write FOnDblClick;
    property OnKeyPress: TMemoXOnKeyPress read FOnKeyPress write FOnKeyPress;
  end;

procedure Register;

implementation

uses ComObj;

procedure TMemoX.InitControlData;
const
  CEventDispIDs: array [0..3] of DWORD = (
    $00000001, $00000002, $00000004, $0000000A);
  CTFontIDs: array [0..0] of DWORD = (
    $FFFFFE00);
  CControlData: TControlData2 = (
    ClassID: '{6F6438E5-5C72-11CF-9D30-FA55F781D805}';
    EventIID: '{6F6438E3-5C72-11CF-9D30-FA55F781D805}';
    EventCount: 4;
    EventDispIDs: @CEventDispIDs;
    LicenseKey: nil (*HR:$80040154*);
    Flags: $0000002D;
    Version: 401;
    FontCount: 1;
    FontIDs: @CTFontIDs);
begin
  ControlData := @CControlData;
  TControlData2(CControlData).FirstEventOfs := Cardinal(@@FOnChange) - Cardinal(Self);
end;

procedure TMemoX.CreateControl;

  procedure DoCreate;
  begin
    FIntf := IUnknown(OleObject) as IMemoX;
  end;

begin
  if FIntf = nil then DoCreate;
end;

function TMemoX.GetControlInterface: IMemoX;
begin
  CreateControl;
  Result := FIntf;
end;

function  TMemoX.Get_Lines: IStrings;
begin
  Result := DefaultInterface.Get_Lines;
end;

procedure TMemoX.Set_Lines(const Value: IStrings);
begin
  DefaultInterface.Set_Lines(Value);
end;

procedure Register;
begin
  RegisterComponents('ActiveX',[TMemoX]);
end;

end.
